Java Technologies -
জাভা ভার্চুয়াল মেশিন (Java Virtual Machine)
JVM এর Garbage Collectors এর ধরণ |
165
165
Garbage Collection (GC) হল Java Virtual Machine (JVM)-এর একটি গুরুত্বপূর্ণ ফিচার, যা মেমরি ম্যানেজমেন্টে সহায়তা করে। এটি সেই মেমরির অপ্রয়োজনীয় অবজেক্টগুলো মুছে ফেলে, যাতে নতুন অবজেক্টের জন্য মেমরি মুক্ত থাকে। Garbage First (G1) Garbage Collector হল JVM এর একটি উন্নত Garbage Collector (GC) যেটি মেমরি ব্যবস্থাপনাকে আরও দক্ষভাবে পরিচালনা করতে সহায়তা করে।
G1 GC হল server-class machine এর জন্য তৈরি একটি low-latency এবং high-throughput garbage collector, যা large heaps এবং multi-core processors তে আরও কার্যকরী। এটি Java 7-এ introdue করা হয়েছিল এবং এটি পূর্ববর্তী Parallel GC এবং CMS (Concurrent Mark-Sweep) GC এর চেয়ে আরও উন্নত।
Garbage First (G1) Garbage Collector এর প্রধান বৈশিষ্ট্য:
Region-based Memory Management:
G1 GC heap কে regions (বিভিন্ন সাইজের ব্লক) তে ভাগ করে, যেখানে Young Generation, Old Generation, এবং Survivor Space সহ সকল মেমরি অংশ থাকে।
Regions এর মাধ্যমে G1 GC মেমরি ম্যানেজমেন্ট করতে পারে, এতে করে মেমরি এক্সট্র্যাকশন আরও কার্যকর এবং ফাইন-গ্রেইনড হয়।
Concurrent Marking:
G1 GC marking phase তে concurrent marking পদ্ধতি ব্যবহার করে, যাতে garbage collection কার্যক্রমের সময় অ্যাপ্লিকেশন থ্রেড থামাতে না হয়।
এটি মূলত Old Generation এর মধ্যে অব্যবহৃত অবজেক্ট খুঁজে বের করে এবং সেগুলো মুছে ফেলে।
Predictability:
G1 GC উন্নত latency predictability প্রদান করে। এটি ব্যবহারকারীদেরকে garbage collection থ্রেডগুলির সময়কাল এবং ভিন্ন ভিন্ন ধাপ সম্পর্কে পূর্বাভাস দিতে সহায়তা করে, যাতে garbage collection কার্যক্রমের পূর্ববর্তী সময়ের সঠিক সময় পরিমাপ করা যায়।
Incremental Collection:
G1 GC incremental (ধাপে ধাপে) garbage collection সম্পন্ন করে। এতে বড় heap গুলির জন্য সার্বক্ষণিক garbage collection এর পরিবর্তে ধাপে ধাপে collection কার্যক্রম পরিচালনা করা হয়, যাতে দীর্ঘ সময়ের জন্য অ্যাপ্লিকেশন থামানো না হয়।
Pause-Time Goals:
G1 GC pause-time goals সেট করতে পারে, যাতে garbage collection এর সময় একটি নির্দিষ্ট pause time বজায় থাকে। এটি স্মরণীয় যে G1 GC application throughput (অ্যাপ্লিকেশন কীভাবে রান করছে) কমানোর চেষ্টা করে না, তবে pause times কমানোর দিকে বেশি মনোযোগ দেয়।
Mixed Collections:
G1 GC সাধারণত young generation (যেখানে নতুন অবজেক্ট তৈরি হয়) এবং old generation (যেখানে পুরনো অবজেক্ট রাখা থাকে) আলাদা করে garbage collection পরিচালনা করে।
পরে, এটি mixed collections পরিচালনা করে যা একাধিক region (young এবং old) একসাথে garbage collect করে, যখন heap এর বিভিন্ন অঞ্চল পূর্ণ হতে থাকে।
Garbage First (G1) Garbage Collector এর কাজের প্রক্রিয়া:
G1 Garbage Collector ৩টি প্রধান ধাপে garbage collection পরিচালনা করে:
Young Generation Collection:
এখানে নতুন অবজেক্টগুলি তৈরি হয় এবং তারা প্রাথমিকভাবে young generation তে থাকে। এই অবজেক্টগুলি যখন old generation এ স্থানান্তরিত হতে শুরু করে, তখন G1 garbage collector তাদেরকে clean করে (Minor GC)।
Old Generation Collection:
এই ধাপে পুরনো অবজেক্টগুলি, যেগুলি বেশ কিছু সময় ধরে heap তে থাকছে এবং বর্তমানে ব্যবহৃত হচ্ছে না, সেগুলি old generation থেকে মুছে ফেলা হয় (Major GC বা Mixed GC)।
G1 GC এই প্রক্রিয়াটি সম্পাদন করতে incremental marking ব্যবহার করে, যা খুব কম সময়ের মধ্যে heap এর বড় অংশগুলিকে পরিস্কার করতে সাহায্য করে।
Mixed Garbage Collection:
G1 GC young এবং old generation এর মধ্যে মিশ্র garbage collection পরিচালনা করে, যখন heap এর নির্দিষ্ট সেগমেন্টগুলি পূর্ণ হয়।
G1 Garbage Collector এর ধাপগুলো:
Initial Mark Phase:
Initial Marking প্রথমে young generation-এর অবজেক্টগুলি চিহ্নিত করে এবং এটি মূলত ছোট সময় নেয়।
Concurrent Mark Phase:
এই ধাপে G1 GC সমস্ত live objects কে চিহ্নিত করতে শুরু করে এবং Old Generation তে অবজেক্টের অবস্থা চিহ্নিত করে। এটি concurrent ভাবে চলে, যাতে অ্যাপ্লিকেশন থ্রেডের কার্যক্রম থামানো না হয়।
Remark Phase:
Remark phase তে, G1 GC প্রথমে চিহ্নিত করা অবজেক্টগুলিকে ফাইন টিউন করার কাজ করে, যাতে সঠিকভাবে অব্যবহৃত অবজেক্টগুলি মুছে ফেলা যায়।
Cleanup Phase:
Cleanup phase শেষ পর্যায়ে সমস্ত অপ্রয়োজনীয় অবজেক্টগুলোকে মুছে ফেলা হয় এবং মেমরি ফেরত দেওয়া হয়।
G1 GC এবং অন্যান্য Garbage Collectors এর তুলনা:
Garbage Collector
Pause Time Goals
Young Generation Collection
Old Generation Collection
Serial GC
No Pause Time Goals
Minor GC stops application threads
Major GC stops application threads
Parallel GC
No Pause Time Goals
Minor GC stops application threads
Major GC stops application threads
CMS GC
Low Pause Time Goals
Concurrent collection, but full GC stops application threads
Less frequent full GC, but high latency
G1 GC
Adjustable Pause Time Goals
Minor GC stops application threads
More efficient collection and fine-grained control over pause times
G1 GC এর Configuration:
G1 GC ব্যবহারের জন্য JVM অপশন কনফিগার করা যেতে পারে:
-XX:+UseG1GC: G1 Garbage Collector চালু করা।
-XX:MaxGCPauseMillis=<time_in_ms>: G1 GC এর জন্য pause time goal নির্ধারণ করা (এটা একটি ইউজার-ডিফাইনড গঠন, G1 GC চেষ্টা করবে এই সময়ের মধ্যে গারবেজ সংগ্রহ শেষ করতে)।
-XX:G1HeapRegionSize=<size>: G1 GC এর heap region সাইজ কাস্টমাইজ করা (যেমন 1MB বা 8MB)।
G1 Garbage Collector একটি উন্নত garbage collection প্রযুক্তি যা JVM এর heap ম্যানেজমেন্টে কার্যকরী এবং কম latency এবং high throughput নিশ্চিত করে। এটি বড় heap সাইজ এবং multi-core processors তে আরও কার্যকরী এবং এটি pause-time goals সেট করে garbage collection প্রক্রিয়াটি আরও নিয়ন্ত্রিত করে। G1 GC আরও কার্যকরী, সামঞ্জস্যপূর্ণ এবং একাধিক ছোট garbage collection লোড পরিচালনা করতে সক্ষম, যা Java অ্যাপ্লিকেশনগুলির জন্য পারফরম্যান্স উন্নত করতে সহায়তা করে।